Computers have become an integral part of people's daily lives, professional and personal. Many daily activities from reading newspapers to performing job-related tasks are done through, mostly networked, computers. A majority of those activities include data retrieval from a variety of data sources and processing. Data retrieval is typically performed by generating queries based on a user's request and submitting them to relevant data sources.
In a networked environment, servers managing data sources may receive thousands—if not millions—of queries every day, retrieve the results, and provide them to requesting applications. Hierarchic organization of data is a common occurrence and valuable to users. However, data storage typically does not give preference to paths along the data hierarchy. Thus, new queries are executed for each hierarchical path regardless of their preference, frequency, or importance. This results in inefficient use of network and computing resources.
The experience of reporting data is often hindered by slow query response times, especially in networked environments. A common workaround to this challenge is to produce static reports on scheduled intervals. However, these static reports lack the real-time interactivity that can enable a user to find the interesting nuggets of data or the dynamism to adjust query operations to a user's profile, thereby wasting network and/or computing resources.